home *** CD-ROM | disk | FTP | other *** search
- property pTrackmanager, pSN, pPosition, pRadius, pFlying, pAnimCounter, pAnimStates, pShadowSN
-
- on new me, tTrackManager, tPosition
- pTrackmanager = tTrackManager
- pShadowSN = pTrackmanager.getSpriteManager().getSN(1, #spikeshadow)
- pSN = pTrackmanager.getSpriteManager().getSN(1, #spike)
- pPosition = point(tPosition[1], tPosition[2])
- pRadius = 20 * 20
- pTrackmanager.INeedADisplayUpdateEachFrame(me)
- pTrackmanager.INeedAnUpdateEachFrame(me)
- pTrackmanager.getCollisionMap().addSpike(me)
- sprite(pSN).member = member("spikeimage")
- sprite(pSN).rect = sprite(pSN).member.rect
- sprite(pSN).ink = 36
- sprite(pShadowSN).ink = 36
- sprite(pShadowSN).blend = 50
- sprite(pShadowSN).loc = point(-100, -100)
- t1 = member("spikeimage")
- t2 = member("spikeimage2")
- pAnimStates = [[#member: t1, #rotation: 0], [#member: t2, #rotation: 0], [#member: t1, #rotation: 50], [#member: t2, #rotation: 50]]
- pAnimCounter = 0
- me.Update()
- return me
- end
-
- on cleanUp me
- pTrackmanager.getCollisionMap().removeSpike(me)
- pTrackmanager.IDontNeedADisplayUpdateEachFrame(me)
- pTrackmanager.IDontNeedAnUpdateEachFrame(me)
- pTrackmanager.getSpriteManager().returnSN(pSN, #spike)
- pTrackmanager.getSpriteManager().returnSN(pShadowSN, #spikeshadow)
- pTrackmanager = 0
- return 0
- end
-
- on collision me, tPos, tOption
- if getDistanceSquared(tPos, pPosition) < pRadius then
- if tOption <> #fake then
- tInitData = [#startsize: 10, #endsize: 100, #rotationspeed: 1, #foreColor: rgb("ffffff").paletteIndex, #backColor: rgb("ffffff").paletteIndex]
- script("newsparks").new(pTrackmanager, pPosition, tInitData)
- tInitData = [#startsize: 10, #endsize: 100, #rotationspeed: 1, #foreColor: rgb("000000").paletteIndex, #backColor: rgb("ffffff").paletteIndex]
- script("newsparks").new(pTrackmanager, pPosition, tInitData)
- if sprite(pSN).loc.inside(rect(0, 0, 640, 480)) then
- script("soundjob").new(pTrackmanager, member("spikes_running_over"))
- end if
- me.cleanUp()
- end if
- return getNormalized(pPosition - tPos)
- end if
- end
-
- on Update me, tTime
- pAnimCounter = pAnimCounter + (tTime / 3.0)
- t = min(max(1, integer(pAnimCounter)), pAnimStates.count)
- sprite(pSN).member = pAnimStates[t][#member]
- sprite(pSN).rotation = pAnimStates[t][#rotation]
- sprite(pSN).rect = sprite(pSN).member.rect
- sprite(pShadowSN).member = member(pAnimStates[t][#member].memberNum + 1, "gfx")
- sprite(pShadowSN).rotation = pAnimStates[t][#rotation]
- sprite(pShadowSN).rect = sprite(pShadowSN).member.rect
- if t = 4 then
- pTrackmanager.IDontNeedAnUpdateEachFrame(me)
- end if
- end
-
- on display me, tScrollOffset
- sprite(pSN).loc = pPosition + tScrollOffset
- sprite(pShadowSN).loc = sprite(pSN).loc + point(2, 2)
- end
-